﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FluentValidation;
using FluentValidation.Attributes;
using Home.Domain.Entities.Example;
using Home.WebUI.Areas.Admin.Models;
using Utilities.ViewModel;
using System.Data.Entity;
using Omu.ValueInjecter;
using Utilities.DataTypes.ExtensionMethods;
using Home.WebUI.Areas.Example.Validation;
namespace Home.WebUI.Areas.Example.Controllers
{
    //public class UserInfoController : Controller
    //{
    //    private ExampleDbContext db = new ExampleDbContext();
    //    private DbSet<UserInfo> Users
    //    { get { return db.UserInfos; } set { value = Users; } }
    //    protected override void Dispose(bool disposing)
    //    {
    //        db.Dispose();
    //        base.Dispose(disposing);
    //    }
    //    //
    //    // GET: /Example/UserInfo/

    //    public ActionResult Index(PagedList<UserInfo> model, int page = 1)
    //    {
    //        //页面项数
    //        int pageSize = 10;
    //        var list = db.UserInfos.Include(t=>t.Career).OrderByDescending(c => c.CreateDate).Skip((page - 1) * pageSize).Take(pageSize);
    //        if (!string.IsNullOrEmpty(model.Search))
    //        {
    //            list = list.Where(c => c.UserName.Contains(model.Search));
    //        }
    //        model.Entities = list;
    //        model.PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = db.UserInfos.Count() };
    //        return View(model);
    //    }

    //    public ActionResult Create()
    //    {
    //        VUserInfoCreate model = new VUserInfoCreate();
    //        ViewBag.CareerId = new SelectList(db.Careers.ToList(), "Id", "Title");
    //        return View(model);
    //    }
    //    [HttpPost]
    //    public ActionResult Create(VUserInfoCreate model)
    //    {
    //        //try
    //        //{
    //        if (ModelState.IsValid)
    //        {
    //            UserInfo content = new UserInfo();
    //            content.InjectFrom(model);
    //            db.UserInfos.Add(content);
    //            db.SaveChanges();
    //            return RedirectToAction("Index");
    //        }
    //        //}
    //        //catch (DataException)
    //        //{
    //        //    TempData["Tip"] = new TipModel(0, "无法保存更改。再试一次，和如果问题仍然存在，请联系您的系统管理员");
    //        //}
    //        ViewBag.CareerId = new SelectList(db.Careers.ToList(), "Id", "Title",model.CareerId);
    //        return View(model);
    //    }
    //    public ActionResult Edit(int id)
    //    {
    //        VUserInfoCreate model = new VUserInfoCreate();
    //        return View(model.InjectFrom(db.UserInfos.Find(id)));
    //    }
    //    [HttpPost]
    //    public ActionResult Edit(VCareerCreate model)
    //    {
    //        try
    //        {
    //            if (ModelState.IsValid)
    //            {
    //                UserInfo content = new UserInfo();
    //                content.Id = model.Id;
    //                db.UserInfos.Attach(content);
    //                model.Map();
    //                content.InjectFrom<ConvertNoNull>(model);
    //                //ObjectMapperManager.DefaultInstance.GetMapper<PNews, PNews>().Map(model, content);//model的值传给content
    //                db.SaveChanges();
    //                TempData["Tip"] = new TipModel(1, "保存成功");
    //                return RedirectToAction("Edit", new { id = model.Id });
    //            }
    //        }
    //        catch (DataException)
    //        {
    //            TempData["Tip"] = new TipModel(0, "无法保存更改。再试一次，和如果问题仍然存在，请联系您的系统管理员");
    //        }
    //        return View(model);
    //    }
    //    [HttpPost]
    //    public ActionResult Delete(int id)
    //    {
    //        try
    //        {
    //            // TODO: Add delete logic here    
    //            if (Request.IsAjaxRequest())
    //            {
    //                UserInfo content = db.UserInfos.Find(id);
    //                int newsNumer = db.UserInfos.Count(n => n.CareerId == content.Id);
    //                //int newsNumer = content.News.Count();
    //                if (newsNumer > 0)
    //                {
    //                    return Content(newsNumer.ToString());
    //                }
    //                db.UserInfos.Remove(content);
    //                //EntityState stateafter = db.Entry(content).State;//Deleted状态     
    //                int result = db.SaveChanges();
    //                return Content("0");
    //            }
    //            else
    //            {
    //                return Content("-1");
    //            }
    //        }
    //        catch
    //        {
    //            return Content("-1");
    //        }
    //    }

    //    //验证是否存在此标题
    //    [HttpGet]
    //    public ActionResult TitleExists(string title, int id = 0)//id为排除的值，0无排除
    //    {
    //        Func<UserInfo, bool> where;
    //        if (id == 0)
    //        {
    //            where = c => c.UserName == title;
    //        }
    //        else
    //        {
    //            where = c => c.UserName == title && c.Id != id;
    //        }
    //        bool exists = true;
    //        int number = db.UserInfos.Where(where).Count();//此处传递委托不好生成的sql语句先执行后过滤的。
    //        if (number == 0)
    //        {
    //            exists = false;
    //        }
    //        return Json(!exists, JsonRequestBehavior.AllowGet);
    //    }
    //}
}
